
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_Hans">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>如何安装 Django &#8212; Django 3.2.11.dev 文档</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>
    <link rel="index" title="索引" href="../genindex.html" />
    <link rel="search" title="搜索" href="../search.html" />
    <link rel="next" title="模型和数据库" href="db/index.html" />
    <link rel="prev" title="使用 Django" href="index.html" />



 
<script src="../templatebuiltins.js"></script>
<script>
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);(function($) {
    $(document).ready(function() {
        $(".c-tab-unix").on("click", function() {
            $("section.c-content-unix").show();
            $("section.c-content-win").hide();
            $(".c-tab-unix").prop("checked", true);
        });
        $(".c-tab-win").on("click", function() {
            $("section.c-content-win").show();
            $("section.c-content-unix").hide();
            $(".c-tab-win").prop("checked", true);
        });
    });
})(jQuery);</script>
<link rel="stylesheet" href="../_static/console-tabs.css" type="text/css" />
  </head><body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../index.html">Django 3.2.11.dev 文档</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../index.html">Home</a>  |
        <a title="Table of contents" href="../contents.html">Table of contents</a>  |
        <a title="Global index" href="../genindex.html">Index</a>  |
        <a title="Module index" href="../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="index.html" title="使用 Django">previous</a>
     |
    <a href="index.html" title="使用 Django" accesskey="U">up</a>
   |
    <a href="db/index.html" title="模型和数据库">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="topics-install">
            
  <div class="section" id="s-how-to-install-django">
<span id="how-to-install-django"></span><h1>如何安装 Django<a class="headerlink" href="#how-to-install-django" title="永久链接至标题">¶</a></h1>
<p>本文档将帮助您使用 Django。</p>
<div class="section" id="s-install-python">
<span id="install-python"></span><h2>安装 Python<a class="headerlink" href="#install-python" title="永久链接至标题">¶</a></h2>
<p>Django 是一个 Python Web 框架。参见 <a class="reference internal" href="../faq/install.html#faq-python-version-support"><span class="std std-ref">我应该使用哪个版本的 Python 来配合 Django?</span></a> 获取更多细节。</p>
<p>可以通过 <a class="reference external" href="https://www.python.org/downloads/">https://www.python.org/downloads/</a> 或者操作系统的包管理工具获取最新版本的 Python。</p>
<div class="admonition-python-on-windows admonition">
<p class="first admonition-title">Windows 上的 Python</p>
<p class="last">如果您刚刚开始学习 Django 并且使用 Windows，查看 <a class="reference internal" href="../howto/windows.html"><span class="doc">如何在 Windows 上安装 Django</span></a>  可能对你有帮助。</p>
</div>
</div>
<div class="section" id="s-install-apache-and-mod-wsgi">
<span id="install-apache-and-mod-wsgi"></span><h2>安装 Apache 和 <code class="docutils literal notranslate"><span class="pre">mod_wsgi</span></code><a class="headerlink" href="#install-apache-and-mod-wsgi" title="永久链接至标题">¶</a></h2>
<p>如果您只是想试验 Django，请跳到下一部分；Django 包含一个可用于测试的轻量级 Web 服务器，因此在准备好在生产环境中部署 Django 之前，您不需要设置 Apache。</p>
<p>如果要在生产站点上使用 Django，请将 <a class="reference external" href="https://httpd.apache.org/">Apache</a> 与 <a class="reference external" href="https://modwsgi.readthedocs.io/en/develop/">mod_wsgi</a> 一起使用。 mod_wsgi 能以两种模式运行：嵌入模式或守护进程模式。在嵌入模式下，mod_wsgi 类似于 mod_perl —— 它在 Apache 中嵌入 Python，并在服务器启动时将 Python 代码加载到内存中。代码在 Apache 进程的整个生命周期中都保留在内存中，与其他服务器相比，这可以显着提高性能。在守护进程模式下，mod_wsgi 会生成一个处理请求的独立守护进程。守护进程可以作为与 Web 服务器不同的用户运行，可能会提高安全性。可以在不重新启动整个 Apache Web 服务器的情况下重新启动守护进程，从而可以更加无缝地刷新代码库。请参阅 mod_wsgi 文档以确定适合您的设置的模式。确保你在安装了 Apache 并且启用了 mod_wsgi 模块。 Django 将在任何支持 mod_wsgi 的 Apache 版本上工作。</p>
<p>若已安装 mod_wsgi 模块，请查看 <a class="reference internal" href="../howto/deployment/wsgi/modwsgi.html"><span class="doc">Django 如何利用 mod_wsgi 工作</span></a> 了解如何配置。</p>
<p>如果由于某种原因你不能使用 mod_wsgi，请不要担心： Django 支持许多其他部署选项。一个是 <a class="reference internal" href="../howto/deployment/wsgi/uwsgi.html"><span class="doc">uWSGI</span></a> ；它和 <a class="reference external" href="https://nginx.org/">nginx</a> 配合使用很好。此外，Django 遵循 WSGI 规范（ <span class="target" id="index-2"></span><a class="pep reference external" href="https://www.python.org/dev/peps/pep-3333"><strong>PEP 3333</strong></a> ），允许它在各种服务器平台上运行。</p>
</div>
<div class="section" id="s-get-your-database-running">
<span id="s-database-installation"></span><span id="get-your-database-running"></span><span id="database-installation"></span><h2>运行你的数据库<a class="headerlink" href="#get-your-database-running" title="永久链接至标题">¶</a></h2>
<p>如果你打算使用 Django 的数据库 API 功能，你需要确保一个数据库服务器正在运行。Django 支持许多不同的数据库服务器，官方支持 <a class="reference external" href="https://www.postgresql.org/">PostgreSQL</a>、<a class="reference external" href="https://mariadb.org/">MariaDB</a>、<a class="reference external" href="https://www.mysql.com/">MySQL</a>、<a class="reference external" href="https://www.oracle.com/">Oracle</a> 和 <a class="reference external" href="https://www.sqlite.org/">SQLite</a>。</p>
<p>如果你正在开发一个小项目或不打算在生产环境中部署的东西，SQLite 通常是最好的选择，因为它不需要运行一个单独的服务器。然而，SQLite 与其他数据库有许多不同之处，所以如果你正在开发一些实质性的东西，建议使用你计划在生产中使用的同一数据库进行开发。</p>
<p>除了官方支持的数据库，还有 <a class="reference internal" href="../ref/databases.html#third-party-notes"><span class="std std-ref">第三方提供的后端</span></a> 允许你在 Django 中使用其他数据库。</p>
<p>除了数据库后端，你还要确保安装了 Python 数据库绑定。</p>
<ul class="simple">
<li>如果你正在使用 PostgreSQL，你需要 <a class="reference external" href="https://www.psycopg.org/">psycopg2</a> 包。相关详细信息请参阅 <a class="reference internal" href="../ref/databases.html#postgresql-notes"><span class="std std-ref">PostgreSQL 笔记</span></a>。</li>
<li>如果你正在使用 MySQL 或 MariaDB，则需要一个像 <code class="docutils literal notranslate"><span class="pre">mysqlclient</span></code> 一样的 <a class="reference internal" href="../ref/databases.html#mysql-db-api-drivers"><span class="std std-ref">DB API 驱动</span></a>。 详细信息参见 <a class="reference internal" href="../ref/databases.html#mysql-notes"><span class="std std-ref">MySQL 后端注意事项</span></a>。</li>
<li>如果你正在使用 SQLite，则可能需要阅读 <a class="reference internal" href="../ref/databases.html#sqlite-notes"><span class="std std-ref">SQLite 后端笔记</span></a> 。</li>
<li>如果你正在使用 Oracle，则需要 <a class="reference external" href="https://oracle.github.io/python-cx_Oracle/">cx_Oracle</a> 的副本，但请阅读 <a class="reference internal" href="../ref/databases.html#oracle-notes"><span class="std std-ref">针对 Oracle 后端的笔记</span></a> 以获取有关 Oracle 和 <code class="docutils literal notranslate"><span class="pre">cx_Oracle</span></code> 支持的版本的详细信息。</li>
<li>如果你使用的是非官方的第三方后端，请参阅提供的文档以了解任何其他要求。</li>
</ul>
<p>如果你打算使用 Django 的 <code class="docutils literal notranslate"><span class="pre">manage.py</span> <span class="pre">migrate</span></code> 命令为你的模型自动创建数据库表（首先安装 Django 并创建项目后），你需要确保 Django 有权限在你使用的数据库中创建和修改表；如果你打算手动创建表，你可以授予 Django <code class="docutils literal notranslate"><span class="pre">SELECT</span></code>、<code class="docutils literal notranslate"><span class="pre">INSERT</span></code>、<code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> 和 <code class="docutils literal notranslate"><span class="pre">DELETE</span></code> 权限。创建具有这些权限的数据库用户后，你将在项目的配置文件中指定详细信息，详细信息参见 <a class="reference internal" href="../ref/settings.html#std:setting-DATABASES"><code class="xref std std-setting docutils literal notranslate"><span class="pre">DATABASES</span></code></a>。</p>
<p>如果你正在使用 Django 的 <a class="reference internal" href="testing/index.html"><span class="doc">测试框架</span></a> 来测试数据库查询，Django 将需要创建测试数据库的权限。</p>
</div>
<div class="section" id="s-install-the-django-code">
<span id="s-install-django-code"></span><span id="install-the-django-code"></span><span id="install-django-code"></span><h2>安装 Django 源码<a class="headerlink" href="#install-the-django-code" title="永久链接至标题">¶</a></h2>
<p>安装过程可能会有些许差异，这取决于你是否在安装一个发行版——某个特定的版本，下载最新的正式发布包，或获取最新的开发版本。</p>
<div class="section" id="s-installing-an-official-release-with-pip">
<span id="s-installing-official-release"></span><span id="installing-an-official-release-with-pip"></span><span id="installing-official-release"></span><h3>通过 <code class="docutils literal notranslate"><span class="pre">pip</span></code> 安装正式发布版本<a class="headerlink" href="#installing-an-official-release-with-pip" title="永久链接至标题">¶</a></h3>
<p>以下是安装 Django 的推荐方式。</p>
<ol class="arabic">
<li><p class="first">安装 <a class="reference external" href="https://pip.pypa.io/">pip</a>。最简单的方式是使用 <a class="reference external" href="https://pip.pypa.io/en/latest/installation/">独立 pip 安装器</a>。若你的系统早已安装 <code class="docutils literal notranslate"><span class="pre">pip</span></code>，你可能需要更新它，因为它可能过期了。如果它过期了，你会知道的，因为过期的用不了。</p>
</li>
<li><p class="first">看一下 <a class="reference external" href="https://docs.python.org/3/tutorial/venv.html" title="(在 Python v3.10)"><span class="xref std std-doc">venv</span></a>。这个工具提供了隔离的Python环境，比在系统内安装包更实用。它还允许在没有管理员权限的情况下安装包。<a class="reference internal" href="../intro/contributing.html"><span class="doc">贡献指南</span></a> 介绍了如何创建一个虚拟环境。</p>
</li>
<li><p class="first">在你已创建并激活一个虚拟环境后，输入以下命令：</p>
<div class="console-block" id="console-block-0">
<input class="c-tab-unix" id="c-tab-0-unix" type="radio" name="console-0" checked>
<label for="c-tab-0-unix" title="Linux/macOS">&#xf17c/&#xf179</label>
<input class="c-tab-win" id="c-tab-0-win" type="radio" name="console-0">
<label for="c-tab-0-win" title="Windows">&#xf17a</label>
<section class="c-content-unix" id="c-content-0-unix">
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>python -m pip install Django
</pre></div>
</div>
</section>
<section class="c-content-win" id="c-content-0-win">
<div class="highlight"><pre><span></span><span class="gp">...\&gt;</span> py -m pip install Django
</pre></div>
</section>
</div>
</li>
</ol>
</div>
<div class="section" id="s-installing-a-distribution-specific-package">
<span id="s-installing-distribution-package"></span><span id="installing-a-distribution-specific-package"></span><span id="installing-distribution-package"></span><h3>安装特定发行版<a class="headerlink" href="#installing-a-distribution-specific-package" title="永久链接至标题">¶</a></h3>
<p>查看 <a class="reference internal" href="../misc/distributions.html"><span class="doc">特定发行版注意事项</span></a> 以查看你的平台／发行版是否提供了官方的 Django 软件包／安装程序。 发行版提供的软件包通常将允许自动安装依赖项和且易于升级； 但是，这些软件包很少包含最新版本的 Django。</p>
</div>
<div class="section" id="s-installing-the-development-version">
<span id="s-installing-development-version"></span><span id="installing-the-development-version"></span><span id="installing-development-version"></span><h3>安装开发版本<a class="headerlink" href="#installing-the-development-version" title="永久链接至标题">¶</a></h3>
<div class="admonition-tracking-django-development admonition">
<p class="first admonition-title">跟踪 Django 开发</p>
<p class="last">如果你决定使用 Django 的最新开发版，你需要关注 <a class="reference external" href="https://code.djangoproject.com/timeline">开发版时间轴</a> 和 <a class="reference internal" href="../releases/index.html#development-release-notes"><span class="std std-ref">即将到来的新特性的发布说明</span></a>。这将保证你能获取所有新特性和最新的代码。（对于稳定发布版，所有必要的修改都在发布说明中记录。）</p>
</div>
<p>如果你希望偶尔能获取最新的补丁和改进，遵循以下说明：</p>
<ol class="arabic">
<li><p class="first">确保你已安装了 <a class="reference external" href="https://git-scm.com/">Git</a>，这样你就可以从 shell 运行对应命令。（在 shell 中输入 <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">help</span></code> 测试是否安装。）</p>
</li>
<li><p class="first">像这样检出 Django 的主开发分支：</p>
<div class="console-block" id="console-block-1">
<input class="c-tab-unix" id="c-tab-1-unix" type="radio" name="console-1" checked>
<label for="c-tab-1-unix" title="Linux/macOS">&#xf17c/&#xf179</label>
<input class="c-tab-win" id="c-tab-1-win" type="radio" name="console-1">
<label for="c-tab-1-win" title="Windows">&#xf17a</label>
<section class="c-content-unix" id="c-content-1-unix">
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/django/django.git
</pre></div>
</div>
</section>
<section class="c-content-win" id="c-content-1-win">
<div class="highlight"><pre><span></span><span class="gp">...\&gt;</span> git clone https://github.com/django/django.git
</pre></div>
</section>
</div>
<p>这会在当前目录创建一个 <code class="docutils literal notranslate"><span class="pre">django</span></code> 目录。</p>
</li>
<li><p class="first">确保 Python 解释器可以加载 Django 的代码。最方便的方法是使用虚拟环境和 <a class="reference external" href="https://pip.pypa.io/">pip</a>。 <a class="reference internal" href="../intro/contributing.html"><span class="doc">贡献指南</span></a> 简略介绍了如何创建虚拟环境。</p>
</li>
<li><p class="first">设置并激活虚拟环境后，运行以下命令：</p>
<div class="console-block" id="console-block-2">
<input class="c-tab-unix" id="c-tab-2-unix" type="radio" name="console-2" checked>
<label for="c-tab-2-unix" title="Linux/macOS">&#xf17c/&#xf179</label>
<input class="c-tab-win" id="c-tab-2-win" type="radio" name="console-2">
<label for="c-tab-2-win" title="Windows">&#xf17a</label>
<section class="c-content-unix" id="c-content-2-unix">
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>python -m pip install -e django/
</pre></div>
</div>
</section>
<section class="c-content-win" id="c-content-2-win">
<div class="highlight"><pre><span></span><span class="gp">...\&gt;</span> py -m pip install -e django\
</pre></div>
</section>
</div>
<p>这会让 Django 的代码可导入，使得 <code class="docutils literal notranslate"><span class="pre">django-admin</span></code> 命令行工具可用。换句话说，大事可为。</p>
</li>
</ol>
<p>当你想更新你的 Django 源代码时，在 <code class="docutils literal notranslate"><span class="pre">django</span></code> 目录下运行 <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">pull</span></code> 命令。当你这样做的时候，Git 会下载所有变更。</p>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">如何安装 Django</a><ul>
<li><a class="reference internal" href="#install-python">安装 Python</a></li>
<li><a class="reference internal" href="#install-apache-and-mod-wsgi">安装 Apache 和 <code class="docutils literal notranslate"><span class="pre">mod_wsgi</span></code></a></li>
<li><a class="reference internal" href="#get-your-database-running">运行你的数据库</a></li>
<li><a class="reference internal" href="#install-the-django-code">安装 Django 源码</a><ul>
<li><a class="reference internal" href="#installing-an-official-release-with-pip">通过 <code class="docutils literal notranslate"><span class="pre">pip</span></code> 安装正式发布版本</a></li>
<li><a class="reference internal" href="#installing-a-distribution-specific-package">安装特定发行版</a></li>
<li><a class="reference internal" href="#installing-the-development-version">安装开发版本</a></li>
</ul>
</li>
</ul>
</li>
</ul>

  <h4>上一个主题</h4>
  <p class="topless"><a href="index.html"
                        title="上一章">使用 Django</a></p>
  <h4>下一个主题</h4>
  <p class="topless"><a href="db/index.html"
                        title="下一章">模型和数据库</a></p>
  <div role="note" aria-label="source link">
    <h3>本页</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/topics/install.txt"
            rel="nofollow">显示源代码</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>快速搜索</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="转向" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">12月 07, 2021</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="index.html" title="使用 Django">previous</a>
     |
    <a href="index.html" title="使用 Django" accesskey="U">up</a>
   |
    <a href="db/index.html" title="模型和数据库">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>